#! /bin/bash
# Copyright (c) 1996-2002 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Florian La Roche <feedback@suse.de>, 1996
#	  Werner Fink <werner@suse.de>, 1996,98,99
#         Martin Scherbaum <feedback@suse.de>, 1997
#         Reinhard Max <max@suse.de>, 1997
#
# /etc/init.d/xdm
#
### BEGIN INIT INFO
# Provides:          xdm
# Required-Start:    $remote_fs
# X-Vendor-Should-Start: ypbind hwscan $syslog
# Required-Stop:
# Default-Start:     5
# Default-Stop:
# Description:       X Display Manager
### END INIT INFO

. /etc/rc.status
. /etc/sysconfig/displaymanager
. /etc/SuSEconfig/profile

locale_vars="\
LANG         \
LC_ALL       \
LC_MESSAGES  \
LC_CTYPE     \
LC_COLLATE   \
LC_TIME      \
LC_NUMERIC   \
LC_MONETARY"

for var in $locale_vars
do
    if eval test -z "\$$var"; then
        eval $var="\$RC_$var"
        export $var
    fi
done

PIDFILE=""
KDEROOTHOME=/root/.kdm
export KDEROOTHOME

case "$DISPLAYMANAGER" in
    kdm|kde|KDM|KDE)	 PIDFILE="-p /var/run/xdm.pid"
			 DISPLAYMANAGER=/opt/kde/bin/kdm
			 test -x /opt/kde2/bin/kdm && \
			 DISPLAYMANAGER=/opt/kde2/bin/kdm 
			 test -x /opt/kde3/bin/kdm && \
			 DISPLAYMANAGER=/opt/kde3/bin/kdm ;;
    gdm|GDM|Gnome|GNOME) DISPLAYMANAGER=/opt/gnome2/bin/gdm ;;
    wdm|WDM)		 DISPLAYMANAGER=/usr/X11R6/bin/wdm ;;
    console) exit 0 ;;
    *)			 DISPLAYMANAGER=/usr/X11R6/bin/xdm ;;
esac
test ! -x "$DISPLAYMANAGER" && DISPLAYMANAGER=/usr/X11R6/bin/xdm

DM=${DISPLAYMANAGER##*/}

rc_reset
case "$1" in
    start)
	echo -n "Starting service $DM"
	startproc $PIDFILE $DISPLAYMANAGER || rc_failed
	# After a crash or a kill signal we may have
	# a wrong owner ship of /dev/xconsole
	if rc_status ; then
	    if test -x /etc/X11/xdm/TakeDevices ; then
		/etc/X11/xdm/TakeDevices
	    else
		chown root:tty /dev/xconsole /dev/tty0
		chmod 622      /dev/xconsole /dev/tty0
	    fi
	fi
	rc_status -v
	;;
    stop)
	echo -n "Shutting down service $DM"
	# 
	# killproc(8) sleep upto five seconds and sends
	# SIGKILL if xdm does not terminate within
	#
	killproc $PIDFILE -TERM $DISPLAYMANAGER
	rc_status -v
	;;
    restart)
	$0 stop
        $0 start
	rc_status
	;;
    reload|force-reload)
	echo -n "Reload service $DM"
	killproc $PIDFILE -HUP  $DISPLAYMANAGER
	rc_status -v
	;;
    status|check)
	echo -n "Checking for service ${DM}: "
	checkproc $PIDFILE $DISPLAYMANAGER
	rc_status -v
	;;
    probe)
	XDMDIR=/usr/X11R6/lib/X11/xdm
	if test $XDMDIR/xdm-config -nt /var/run/xdm.pid -o \
	        $XDMDIR/Xservers   -nt /var/run/xdm.pid
	then
	    echo reload
	fi
	;;
    *)
	echo "Usage: $0 {start|stop|status|restart|reload|force-reload|probe}"
	exit 1
esac
rc_exit
